package com.ling.common.library.media

import android.content.Context
import com.ling.common.library.media.model.AlbumModel
import com.ling.common.library.media.model.DocType
import com.ling.common.library.media.model.MediaModel
import com.ling.common.library.media.model.PageModel

/**
 * @author Ling
 * @date :2024/12/12 17:45
 */
interface LocalDocFinder {

    /**
     * 设置分页的每页数量
     * */
    fun setPageCount(count : Int) : LocalDocFinder

    /**
     * 是否需要添加ALL相册
     * */
    fun enableAllAlbum(enable : Boolean) : LocalDocFinder

    /**
     * 获取本地文档的专辑文件夹
     * @param context 上下文
     * @param fillAlbumItem 是否在初始化专辑文件夹的时候，把该文件夹下的所有内容也查询出来
     * @param docType 文档类型，详见DocType枚举类 ， 默认查询全部文档
     * @return List<AlbumModel> 专辑文件夹集合
     * */
    suspend fun getAlbum(context: Context, fillAlbumItem : Boolean = false, docType: DocType = DocType.ALL) : List<AlbumModel>?

    /**
     * 获取本地文档文件
     * @param context 上下文
     * @param docType 文档类型，详见DocType枚举类 ，默认查询全部文档
     * @param albumId 专辑文件夹ID，可以配合getAlbum()方法做到单独查询某一个专辑文件夹下的文档
     * @return List<MediaModel> 文档集合
     * */
    suspend fun getDoc(context: Context, docType: DocType = DocType.ALL, albumId : Long? = null) : List<MediaModel>?

    /**
     * 分页获取本地文档文件
     * @param context 上下文
     * @param docType 文档类型，详见DocType枚举类 ， 默认查询全部文档
     * @param albumId 专辑文件夹ID，可以配合getAlbum()方法做到单独查询某一个专辑文件夹下的文档
     * @return List<MediaModel> 文档集合
     * */
    suspend fun getDocByPage(context: Context, pageIndex : Int, docType: DocType = DocType.ALL, albumId: Long? = null) : PageModel?
}